package com.jltx.zeus.observable

/**
 * 可取消的异步调用接口
 */
interface AsyncCall<T> {
    fun enqueue(callback: Callback<T>?)
    fun cancel()
    interface Callback<T> {
        /**
         * 异步请求成功的时候调用，最多调用一次（与onFailure互斥）
         * @param result
         */
        fun onSuccess(result: T)

        /**
         * 异步请求失败的时候调用，最多调用一次（与onSuccess互斥）
         * @param t
         */
        fun onFailure(t: Throwable)
    }
}